package org.huawei260.TiKu.ODsuanfa;

import java.util.Arrays;
import java.util.Scanner;
public class A_2023A_3003__双指针_两数之和绝对值最小 {

//	public class Main {
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
			int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
			System.out.println(getResult(nums));
		}

		public static int getResult(int[] nums) {
			//    Arrays.sort(nums);

			int idx = Arrays.binarySearch(nums, 0);
			if (idx < 0) idx = -idx - 1;

			// 全正数，或者 0+多个正数
			if (idx == 0) return nums[0] + nums[1];

			int n = nums.length;
			// 全负数，或者 多个负数+0
			if (idx >= n - 1) return Math.abs(nums[n - 2] + nums[n - 1]);

			// 下面是有正有负的处理逻辑
			int min = Integer.MAX_VALUE;

			// 负数部分最后两个值
			if (idx >= 2) {
				min = Math.min(min, Math.abs(nums[idx - 2] + nums[idx - 1]));
			}

			// 非负数部分的前两个值
			if (idx < n - 1) {
				min = Math.min(min, Math.abs(nums[idx] + nums[idx + 1]));
			}

			// 非负数部分的数组
			int[] positive = Arrays.copyOfRange(nums, idx, n);
			for (int i = 0; i < idx; i++) {
				// 注意通过二分查找-nums[i]在positive的有序插入位置j，则最接近-nums[i]的值的位置有两个：j-1和j，其中j位置的元素值 >= -nums[i]，而j -
				// 1位置的元素值 < -nums[i]
				int j = Arrays.binarySearch(positive, -nums[i]);

				if (j < 0) j = -j - 1;
				if (j == positive.length) j -= 1;

				min = Math.min(min, Math.abs(nums[i] + positive[j]));

				if (j - 1 >= 0) {
					min = Math.min(min, Math.abs(nums[i] + positive[j - 1]));
				}
			}

			return min;
		}
	}